//
//  TableViewProtocol.h
//  ElongIpadClient
//
//  Created by zhucuirong on 15/2/11.
//  Copyright (c) 2015年 dragonyuan. All rights reserved.
//

#import <Foundation/Foundation.h>

@class BaseTableViewAdapter;

typedef void (^TableViewCellConfigureBlock)(id cell, id item, NSIndexPath *indexPath);


@protocol TableViewAdapterDelegate <NSObject>

@optional
- (void)tableViewAdapter:(BaseTableViewAdapter *)tableViewAdapter didSelectRowAtIndexPath:(NSIndexPath *)indexPath;

@end


@interface BaseTableViewAdapter : NSObject <UITableViewDataSource,UITableViewDelegate>
{
    NSString *_cellIdentifier;
    BOOL _isMultiple;
}
/**
 *  可能在初始化之后要对数据源进行改变
 */
@property (nonatomic, strong) NSArray *items;
@property (nonatomic, weak) id<TableViewAdapterDelegate> delegate;
@property (nonatomic, readonly, copy) TableViewCellConfigureBlock cellConfigureBlock;


/**
 *  初始化表格方法
 *  根据数据源自动计算出数量，支持二位数组
 *  使用二维数组的时候，将multipleItem值设为YES即可完成数据的输入
 *
 *  @param items             数据源
 *  @param cellIdentifier     cell标示符
 *  @param configureCellBlock 配置cell方法的block回调方法
 *
 *  @return instancetype
 */
- (instancetype)initWithItems:(NSArray *)items
       multipleItem:(BOOL)multipleItem
     cellIdentifier:(NSString *)cellIdentifier
 cellConfigureBlock:(TableViewCellConfigureBlock)cellConfigureBlock;

/**
 *  返回对应indexPath的数据项
 *
 *  @param indexPath <#indexPath description#>
 *
 *  @return <#return value description#>
 */
- (id)itemAtIndexPath:(NSIndexPath *)indexPath;

@end
